home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS01.ADF / ABasicStuff / Graphics / ThreeDee.bas < prev    next >
BASIC Source File  |  1985-12-04  |  2KB  |  45 lines

  1. 290   scnclr:PRINT TAB(14);"3-D plots":PRINT
  2. 300   REM INPUT PARAMETERS
  3. 310   PRINT : INPUT "Grid width: 10"; A$: IF A$="" THEN GW=10:GOTO 330
  4. 320   GW = VAL(A$)
  5. 330   INPUT "Accuracy (1-fine,10-poor): 10";A$:IF A$="" THEN AC=10: GOTO 350
  6. 340   AC=VAL(A$)
  7. 350   C=SQR(2)/2:GOSUB 470: OX=120: OY=32
  8. 360   scnclr : screen 0,4,0
  9. 370   REM BEGIN ITERATIONS
  10. 380   FOR X=XU TO XL STEP -GW*XM:GOSUB 610
  11. 390   FOR Y=YL TO YU STEP AC*YM:GOSUB 640:GOSUB 700:NEXT:Y=YU:GOSUB 640:GOSUB 700:NEXT
  12. 400   X=XL:GOSUB 610: FOR Y=YL TO YU STEP AC*YM:GOSUB 640:GOSUB 700:NEXT
  13. 410   FOR Y=YL TO YU STEP GW*YM: GOSUB 620
  14. 420   FOR X=XL TO XU STEP AC*XM:K=(X+TX)/XM*C
  15. 430   GOSUB 640:GOSUB 700:NEXT:K=(XU+TX)/XM*C:GOSUB 640:GOSUB 700:NEXT
  16. 440   Y=YU:GOSUB 620: FOR X=XL TO XU STEP AC*XM:K=(X+TX)/XM*C:GOSUB 640:GOSUB 700:NEXT
  17. 445   get a$ : if a$="" then goto 445
  18. 450   STOP
  19. 460   REM INPUT PARAMETERS
  20. 470   INPUT "X min:-4";A$: IF A$="" THEN XL=-4: GOTO 490
  21. 480   XL=VAL(A$)
  22. 490   INPUT "Y min:-4";A$: IF A$="" THEN YL=-4: GOTO 510
  23. 500   YL=VAL(A$)
  24. 510   INPUT "X max: 4";A$:IF A$="" THEN XU=4: GOTO 530
  25. 520   XU=VAL(A$)
  26. 530   INPUT "Y max: 4";A$: IF A$ = "" THEN YU=4  :GOTO 550
  27. 540   YU=VAL(A$)
  28. 550   INPUT "Z max: 2";A$: IF A$="" THEN ZU= 2: GOTO 570
  29. 560   ZU=VAL(A$)
  30. 570   INPUT "Z min:-2";A$:IF A$="" THEN ZL=-2: GOTO 590
  31. 580   ZL=VAL(A$)
  32. 590   ZM=(ZU-ZL)/140:XM=(XU-XL)/200: YM=(YU-YL)/200
  33. 600   TX=0-XL:TY=0-YL:TZ= -80*ZM - ZL: RETURN
  34. 610   K=(X+TX)/XM*C:Y=YL:GOSUB 640:U=I:V=J: RETURN
  35. 620   X=XL:K=(X+TX)/XM*C:GOSUB 640:U=I:V=J:RETURN
  36. 630   REM STATEMENT 640  CONTAINS THE FUNCTION TO BE PLOTTED
  37. 640   Z=SIN(X) + SIN(Y)
  38. 650   I=OX+(Y+TY)/YM - K:J=OY-(Z+TZ)/ZM+K: IF I< 0 THEN I=0
  39. 660   IF I > 279 THEN I=279
  40. 670   IF J > 191 THEN J=191
  41. 680   IF J< 0 THEN J=0
  42. 690   RETURN
  43. 700   IF (U=0 AND I=0) OR (U=279 AND I=279) OR (V=0 AND J=0) OR (J=191 AND V=191) THEN U=I:V=J: RETURN
  44. 710   draw (U,V to I,J):U=I:V=J:RETURN
  45.